The disclosure pertains to software testing techniques, and more particularly to testing software that executes within a cloud computing environment. A client-server environment involves a client computing device that sends requests to a server computing device. The server receives these requests, processes these requests, and returns results of the processing to the client. Often, these requests are transmitted through one or more networks, potentially including the Internet. The client in such an environment may be a web client, which sends requests through the world wide web to a web server.
Requests received over the world wide web from a web client can be processed by applications executing on an application server. The applications—computer programs—executing on the application server can process the requests using the facilities of a database. The database can store and retrieve data used in the processing of the requests and the generation of the results. In some scenarios, such an application server and database can be installed upon a set of computing nodes within a cloud computing environment. The combination of the installed application server (including the applications that execute upon it) and database therefore may be called an “installation.”
In a cloud computing environment, the computing nodes and the software programs that execute upon those nodes typically are not owned by the users of those software programs. Sometimes, the hardware and software resources resident within a cloud computing environment are shared by many different users. These users might be entirely unrelated to each other.
The users of the resources of a cloud computing environment can be separate customers—separate business organizations, for example. Usually, such customers require that their business data be maintained in a private manner such that no other customers can access that data as it is stored in the cloud computing environment. A cloud computing environment may include mechanisms for enforcing isolation between the data, and even the applications, used by different customers. This enforced isolation prevents one customer from reading another customer's data or updating another customer's data, even if both customers are users of the same cloud computing environment.
One approach for enforcing isolation between customers is by requiring each customer to have a completely separate installation within the cloud computing environment. Under this approach, a first installation of an application server and database upon a set of cloud computing nodes may serve a first customer only, while a second installation of the application server and database upon a set of cloud computing nodes may serve a second customer only. The application server in the first installation (and the applications executing thereon) might be configured to access data only from the database in the first installation. Similarly, the application server in the second installation (and the applications executing thereon) might be configured to access data only from the database in the second installation. Customers may be prevented from altering these configurations.
A designer of any of the components of an installation naturally will want to ensure that the component that he has designed functions properly. A malfunction might produce severe consequences, especially in a cloud computing environment. If a component of an installation does not function correctly—for example, if a component is erroneously permitted to access components of other installations—then the malfunction could result in the privacy of other customers' data being compromised. Such data might include credit card numbers, photographs, or other highly sensitive information.
To ensure that the components of an installation are functioning as intended, and that they are functioning properly in their interactions with other components of that installation, a designer can execute tests relative to an installation. These tests may involve the automated performance of operations specified in a test script, for example. Execution of the operations by components of an installation may involve the reading and updating of data stored in the database of the installation. Following the execution of a series of operations, a test script can cause a particular value to be read from the database and compared to an expected value. If the particular value does not match the expected value, then some error likely afflicts some component of the installation.
Approaches for testing an installation have so far been limited to the testing of single installations in isolation of others that might also exist, potentially on the same cloud computing nodes within a cloud computing environment. These approaches assume that testing performed relative to one installation will have equal value to that same testing being performed relative to other identical installations that also might exist in the cloud computing environment.